﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BUS;
using DTO;

namespace Nhom16_PTTKHTTT_12HCB
{
    public partial class frmKhachHang : DevComponents.DotNetBar.Office2007Form
    {
        public delegate void SetMaKhachHang(string MaKH, float DiemTichLuy);
        public event SetMaKhachHang KhiSetMaKhachHang = null;

        public int diemcong = 0;

        DataTable dt = new DataTable();
        DataTable dtsearch = new DataTable();
        DiemCong_BUS diemcong_bus;
        //DiemCong diemcong_dto;

        KhachHang_BUS khachhang_bus;
        KhachHang khachhang_dto;

        bool flagKiemTraControl = true;
        bool flagKiemTraThemXoaSua = true;
        int index = 0;

        public frmKhachHang()
        {
            InitializeComponent();
        }

        private bool kiemtra()
        {
            if (txtTenKH.Text.Trim() == "")
            {
                MessageBox.Show("Tên khách hàng không được bỏ trống","Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                flagKiemTraControl = false;
                txtTenKH.Focus();
            }
            else if (txtDiaChi.Text.Trim() == "")
            {
                MessageBox.Show("Vui lòng nhập địa chỉ khách hàng", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                flagKiemTraControl = false;
                txtDiaChi.Focus();
            }
            else if (txtSoDienThoai.Text.Trim() == "")
            {
                MessageBox.Show("Vui lòng nhập số điện thoại của khách hàng để tiện liên lạc khi cần", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                flagKiemTraControl = false;
                txtSoDienThoai.Focus();
            }
            else
            {
                flagKiemTraControl = true;
            }
            return flagKiemTraControl;
        }
        private void loadDanhSachKhachHang()
        {
            dt = khachhang_bus.getDanhSachKhachHang();
            dgvDanhSachKH.DataSource = dt;
        }
        private void loadDanhSachKhachHangSearch(string cmnd)
        {
            dtsearch = khachhang_bus.getDanhSachKhachHangSearch(cmnd);
            dgvDanhSachKH.DataSource = dtsearch;
        }

        private void frmKhachHang_Load(object sender, EventArgs e)
        {
            khachhang_bus = new KhachHang_BUS();
            diemcong_bus = new DiemCong_BUS();

            cboCongDiem.DisplayMember = "DiemCong";
            cboCongDiem.ValueMember = "DiemCong";
            cboCongDiem.DataSource = diemcong_bus.getDanhSachDiemCong();
            loadDanhSachKhachHang();
            cboCongDiem.SelectedValue = diemcong;
            
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            kiemtra();
            if (flagKiemTraControl == true)
            {
                khachhang_dto = new KhachHang();
                khachhang_dto.TenKH = txtTenKH.Text;
                khachhang_dto.CMND = txtCMND.Text;
                khachhang_dto.DiaChi = txtDiaChi.Text;
                khachhang_dto.DienThoai = txtSoDienThoai.Text;
                khachhang_dto.NgayLapThe = DateTime.Now;
                if (txtMaKH.Text.Trim() == "")
                {
                    khachhang_dto.DiemTichLuy = float.Parse("20");
                    khachhang_dto.TongDiem = float.Parse("20");
                }
                else
                {
                    khachhang_dto.DiemTichLuy = float.Parse(cboCongDiem.Text)+ float.Parse(lbDiemTichLuyCon.Text);
                    khachhang_dto.TongDiem = float.Parse(lbTongDiem.Text) + float.Parse(cboCongDiem.Text);
                }
                
                khachhang_dto.NgayCapNhatSauCung = DateTime.Now;
                flagKiemTraThemXoaSua = khachhang_bus.insertKhachHang(khachhang_dto);
                if (flagKiemTraThemXoaSua == true)
                {
                    MessageBox.Show("Thêm khách hàng thành công", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    loadDanhSachKhachHang();
                    dgvDanhSachKH.Rows[index].Selected = true;
                }
                else
                    MessageBox.Show("Thất bại! Vui lòng kiểm tra CMND đã tồn tại chưa?", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }

        private void dgvDanhSachKH_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            index = dgvDanhSachKH.CurrentRow.Index;
        }

        private void dgvDanhSachKH_SelectionChanged(object sender, EventArgs e)
        {
            txtMaKH.Text = dgvDanhSachKH.CurrentRow.Cells[0].Value.ToString();
            txtTenKH.Text = dgvDanhSachKH.CurrentRow.Cells[1].Value.ToString();
            txtCMND.Text = dgvDanhSachKH.CurrentRow.Cells[2].Value.ToString();
            txtDiaChi.Text = dgvDanhSachKH.CurrentRow.Cells[3].Value.ToString();
            txtSoDienThoai.Text = dgvDanhSachKH.CurrentRow.Cells[4].Value.ToString();
            dateNgayLap.Text = dgvDanhSachKH.CurrentRow.Cells[5].Value.ToString();
            dateNgayLap.Enabled = false;
            lbDiemTichLuyCon.Text = dgvDanhSachKH.CurrentRow.Cells[6].Value.ToString();
            lbTongDiem.Text = dgvDanhSachKH.CurrentRow.Cells[7].Value.ToString();
            dateNgayCapNhat.Text = dgvDanhSachKH.CurrentRow.Cells[8].Value.ToString();
        }

        private void btnCapnhat_Click(object sender, EventArgs e)
        {
            kiemtra();
            if (flagKiemTraControl == true)
            {
                khachhang_dto = new KhachHang();
                khachhang_dto.MaKH = txtMaKH.Text;
                khachhang_dto.TenKH = txtTenKH.Text;
                khachhang_dto.CMND = txtCMND.Text;
                khachhang_dto.DiaChi = txtDiaChi.Text;
                khachhang_dto.DienThoai = txtSoDienThoai.Text;
                khachhang_dto.NgayLapThe = DateTime.Parse(dateNgayLap.Text);
                if (txtMaKH.Text.Trim() == "")
                {
                    khachhang_dto.DiemTichLuy = float.Parse("20");
                }
                else
                {
                    khachhang_dto.DiemTichLuy = float.Parse(cboCongDiem.Text) + float.Parse(lbDiemTichLuyCon.Text);
                }
                khachhang_dto.TongDiem = float.Parse(lbTongDiem.Text) + float.Parse(cboCongDiem.Text);
                khachhang_dto.NgayCapNhatSauCung = DateTime.Now;
                flagKiemTraThemXoaSua = khachhang_bus.updateKhachHang(khachhang_dto);
                if (flagKiemTraThemXoaSua == true)
                {
                    MessageBox.Show("Cập nhật thông tin khách hàng thành công", "Ok", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    loadDanhSachKhachHang();
                    dgvDanhSachKH.Rows[index].Selected = true;
                }
                else
                    MessageBox.Show("Thất bại! Vui lòng kiểm tra thông tin", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void txtTimKiemKhachHang_TextChanged(object sender, EventArgs e)
        {
            if (txtTimKiemKhachHang.Text.Trim() == "")
                loadDanhSachKhachHang();
            else
                loadDanhSachKhachHangSearch(txtTimKiemKhachHang.Text.Trim());

        }

        private void btnLamMoi_Click(object sender, EventArgs e)
        {
            txtMaKH.Clear();
            txtTenKH.Clear();
            txtCMND.Clear();
            txtDiaChi.Clear();
            txtSoDienThoai.Clear();
            dateNgayLap.Enabled = true;
            lbDiemTichLuyCon.Text = "0";
            lbTongDiem.Text = "0";
            dateNgayLap.Text = DateTime.Now.ToString();
            dateNgayCapNhat.Text = DateTime.Now.ToString();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            int makh = int.Parse(dgvDanhSachKH.CurrentRow.Cells[0].Value.ToString());
            float diem = float.Parse(dgvDanhSachKH.CurrentRow.Cells[6].Value.ToString());
            if (KhiSetMaKhachHang != null)
            {
                KhiSetMaKhachHang(makh.ToString(), diem);
            }
            this.Close();
        }

        private void dgvDanhSachKH_DoubleClick(object sender, EventArgs e)
        {
            int makh = int.Parse( dgvDanhSachKH.CurrentRow.Cells[0].Value.ToString());
            float diem = float.Parse(dgvDanhSachKH.CurrentRow.Cells[6].Value.ToString());
            if (KhiSetMaKhachHang != null)
            {
                KhiSetMaKhachHang(makh.ToString(), diem);
            }
            this.Close();
        }

        private void dgvDanhSachKH_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void txtCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && (!Char.IsControl(e.KeyChar)))
            {
                e.Handled = true;
                MessageBox.Show("Chỉ được nhập số", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtCMND.Focus();
            }
        }

        private void txtSoDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && (!Char.IsControl(e.KeyChar)))
            {
                e.Handled = true;
                MessageBox.Show("Chỉ được nhập dạng số", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtSoDienThoai.Focus();
            }
        }

        private void txtTimKiemKhachHang_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && (!Char.IsControl(e.KeyChar)))
            {
                e.Handled = true;
                MessageBox.Show("Chỉ được nhập số", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtTimKiemKhachHang.Focus();
            }
        }
    }
}